MNIST(Modified National Institute of Standards and Technology)是一個廣泛使用的手寫數字識別資料集。它通常用來訓練和測試各種機器學習和深度學習模型,主要是用於各種圖像處理系統,這些圖像大小為 28x28 像素。而因為它相較簡單和普遍,便成為了許多算法的基準測試資料集,尤其是在深度學習和卷積神經網絡領域。
MNIST 資料集的特點包括:
數據量:70,000 張圖像中,60,000 張用於訓練,10,000 張用於測試。
類別:圖像表示 0 到 9 的數字,總共 10 個類別。
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255
y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)
y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)
print('Training data shape:', x_train.shape)
print('Testing data shape:', x_test.shape)
標準化是為了將像素值從 [0, 255] 轉換到 [0, 1] 範圍,有助於加快模型訓練速度。
而將標籤轉換為 one-hot 格式,能使每個數字對應一個長度為 10 的向量。
最後會得到:
Training data shape: (60000, 28, 28)
Testing data shape: (10000, 28, 28)
接下來看一下 MNIST 中的手寫數字圖像,可以使用 matplotlib 庫來顯示圖片:
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
plt.figure(figsize=(10, 2))
for i in range(10):
plt.subplot(1, 10, i + 1)
plt.imshow(x_train[i], cmap='gray')
plt.axis('off')
plt.title(f'Label: {y_train[i]}')
plt.show()
◆plt.figure(figsize=(10, 2)) 是設置繪圖的大小。
◆plt.subplot(1, 10, i + 1) 用來創建 1 行 10 列的子圖,一個子圖一個手寫數字。
◆plt.imshow(x_train[i], cmap='gray') 顯示圖像,灰度色彩映射。
◆plt.axis('off') 關閉坐標軸顯示。
讓它一次印出前 10 張手寫數字圖像及其標籤。
如果要將它轉換成數字:
numeric_labels = y_train[:10]
print('Numeric labels:', numeric_labels)
就可以得到:
Numeric labels: [5 0 4 1 9 2 1 3 1 4]
以上是關於 MNIST 手寫數字辨識資料集的介紹和基礎操作。